home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1993 October / 64er_Magazin_93-10_1993_Markt__Technik_de_Side_B.d64 / demo source.seq next >
Encoding:
Text File  |  1993-01-01  |  9.9 KB  |  334 lines

  1.          *= $4000 ;startadresse $4000
  2.  
  3. ;---------------------------------------
  4. ;--------variablen setzen---------------
  5. ;---------------------------------------
  6.  
  7. irqlow   = $0314  ;irq-vektor lowbyte
  8. irqhig   = $0315  ;           highbyte
  9. oldirq   = $ea31  ;alte irq-routine
  10.  
  11. initmusic = $1000 ;musik initialisieren
  12. playmusic = $1003 ;abspielen
  13.  
  14. flashcount = $fb  ;zaehler 1 und 2
  15. flashcount2 = $fc ;fuer flash-effekte
  16.  
  17. scrhelp  = $03fb  ;hilfsregister f.
  18. scrollreg = $d016 ;scrollregister
  19.  
  20. charset  = $d018  ;zeichens. definieren
  21. raster   = $d012  ;rasterstrahl-pos
  22. yscroll  = $d011  ;y-scroll-register
  23. imr      = $d01a  ;irq mask register
  24.  
  25. ;---------------------------------------
  26. ;--------irq vorbereiten----------------
  27. ;---------------------------------------
  28.  
  29.          sei         ;irq sperren
  30.  
  31.          jsr init    ;initialisieren
  32.  
  33.          lda #<start ;lowbyte laden
  34.          sta irqlow  ;und speichern
  35.          lda #>start ;highbyte laden
  36.          sta irqhig  ;und speichern
  37.  
  38.          lda yscroll ;y-scroll-register
  39.          and #$7f    ;richtig
  40.          sta yscroll ;setzen
  41.  
  42.          lda #$7f    ;timer
  43.          sta $dc0d   ;setzen
  44.  
  45.          lda #$01    ;raster-irq
  46.          sta imr     ;festlegen
  47.  
  48.          lda #$00    ;musik
  49.          jsr initmusic;initialisieren
  50.          cli         ;irq freigeben
  51.          jmp *       ;endlos-schleife
  52.  
  53. ;---------------------------------------
  54. ;--------irq-hauptschleife--------------
  55. ;---------------------------------------
  56.  
  57. start    lda yscroll   ;warten bis
  58.          bpl start     ;unterer rand
  59.                        ;erreicht
  60.          lda #$1a      ;zeichensatz
  61.          sta charset   ;umschalten
  62.          lda #$c8      ;scrollreg
  63.          sta scrollreg ;setzen
  64.  
  65.          jsr playmusic ;musik spielen
  66.  
  67.          lda #$38      ;auf rasterline
  68. st1      cmp raster    ;$38
  69.          bne st1       ;warten
  70.  
  71.          jsr rastershow;raster-farben
  72.          jsr scroll    ;farben scrollen
  73.  
  74.          lda #$8c      ;auf rasterline
  75. st2      cmp raster    ;$8c
  76.          bne st2       ;warten
  77.  
  78.          lda #$1c      ;kleinen zeichen
  79.          sta charset   ;satz ein
  80.  
  81.          jsr flash     ;3 linien flashen
  82.  
  83.          lda #$b8      ;auf rasterline
  84. st3      cmp raster    ;$b8
  85.          bne st3       ;warten
  86.  
  87.          jsr charscroll;scrollroutine
  88.          jsr charflash ;farbscrolling
  89.  
  90.          jmp oldirq    ;alter irq
  91.  
  92. ;---------------------------------------
  93. ;--------sub-routinen-------------------
  94. ;---------------------------------------
  95.  
  96. flash    ldy #$77      ;3lines=$77 chars
  97.          ldx flashcount;counter holen
  98.          lda flashtab,x;und byte
  99. flash1   sta $da08,y   ;schreiben solang
  100.          dey           ;bis alle drei
  101.          bpl flash1    ;zeilen fertig
  102.          inc flashcount;counter+1
  103.          cpx #$18      ;schon 18 werte?
  104.          bne flashend  ;nein dann ende
  105.          lda #$00      ;ja dann zaehler
  106.          sta flashcount;zuruecksetzen
  107. flashend rts           ;ende
  108.  
  109. flashtab ;farbwerte
  110.          .byte $02,$02,$02,$0a,$0a,$0a
  111.          .byte $07,$07,$07,$0f,$0f,$0f
  112.          .byte $07,$07,$07,$0a,$0a,$0a
  113.          .byte $02,$02,$02,$00,$00,$00
  114.  
  115. ;---------------------------------------
  116.  
  117. charflash
  118.          ldy $db20  ;farbram von
  119.          ldx #$00   ;$db20 bis
  120. charfl1  lda $db21,x;$db47
  121.          sta $db20,x;endlos
  122.          inx        ;rotieren
  123.          cpx #$27   ;das y-reg dient
  124.          bne charfl1;als zwischen-
  125.          sty $db47  ;speicher
  126.          rts        ;ende
  127.  
  128. flashtab2 ;farbtabelle
  129.          .byte $06,$06,$06,$04,$04,$04
  130.          .byte $0e,$0e,$0e,$03,$03,$03
  131.          .byte $0f,$0f,$0f,$01,$01,$01
  132.          .byte $01,$01,$01,$0f,$0f,$0f
  133.          .byte $03,$03,$03,$0e,$0e,$0e
  134.          .byte $04,$04,$04,$06,$06,$06
  135.          .byte $00,$00,$00,$00
  136. tabend2
  137. ;---------------------------------------
  138.  
  139. charscroll
  140.          ldx scrhelp  ;register holen
  141.          dex          ;und zweimal
  142.          dex          ;dekrementieren
  143.                       ;(scrollspeed)
  144.          stx scrhelp  ;in hilfs & scrreg
  145.          stx scrollreg;schreiben
  146.          cpx #$bf     ;schon unterlauf?
  147.          beq hardscr  ;dann hardscroll
  148.          rts          ;ende
  149.  
  150. hardscr  ldx #$c7     ;register
  151.          stx scrollreg;zurueck-
  152.          stx scrhelp  ;setzen
  153.  
  154.          ldx #$00     ;bildschirmzeile
  155. hard1    lda $0721,x  ;um eins
  156.          sta $0720,x  ;nach
  157.          inx          ;links
  158.          cpx #$27     ;rotieren
  159.          bne hard1    ;
  160.  
  161. change   lda text     ;textbyte laden
  162.          cmp #$00     ;schon abbruch?
  163.          bne cont     ;nein dann cont
  164.          lda #<text   ;lowbyte
  165.          sta change+1 ;schreiben
  166.          lda #$20     ;und akku auf
  167.          sta $0747    ;leerzeichen
  168.          rts          ;ende
  169. cont     sta $0747    ;zeichen schreiben
  170.          inc change+1 ;change im code
  171.                       ;um eins addieren
  172. scrend   rts          ;ende
  173.  
  174. text     .text "  "
  175.          .text "   
  176.   "
  177.          .text "       "
  178.          .text "   "
  179.          .text "    255"
  180.          .text "    "
  181.          .text "
  182.    "
  183.          .text "   "
  184.          .text "              "
  185.          .byte $00
  186.  
  187. ;---------------------------------------
  188.  
  189. rastershow
  190.          ldx #$00    ;zaehler auf $00
  191. color1   lda coltab,x;farbwert holen
  192.          ldy waitab,x;wait-wert holen
  193. wait1    dey         ;herunterzaehlen
  194.          bne wait1   ;um die zyklen
  195.                      ;auszugleichen
  196.          sta $d021   ;farbe
  197.          sta $d021   ;schreiben
  198.          inx         ;zaehler+1
  199.          cpx #$40    ;schon 40 farben?
  200.          bne color1  ;nein dann color1
  201.          lda #$00    ;ja dann screen
  202.          sta $d020   ;auf schwarz
  203.          sta $d021   ;setzen
  204.          rts         ;ende
  205.  
  206. coltab
  207.          .byte $06,$04,$0e,$03,$07,$0f
  208.          .byte $01,$01,$0f,$07,$03,$0e
  209.          .byte $06,$04,$00,$00,$09,$02
  210.          .byte $0a,$07,$0f,$01,$01,$0f
  211.          .byte $07,$0a,$02,$09,$00,$00
  212.          .byte $09,$0b,$08,$0c,$0f,$07
  213.          .byte $01,$01,$0f,$0c,$08,$0b
  214.          .byte $09,$00,$00,$02,$0a,$07
  215.          .byte $0f,$01,$0b,$0c,$0f,$01
  216.          .byte $01,$0f,$0c,$0b,$01,$0f
  217.          .byte $07,$0a,$02,$00,$00
  218. colend
  219. waitab
  220.          .byte $09,$08,$08,$01,$08,$08
  221.          .byte $08,$08,$08,$08,$08,$01
  222.          .byte $08,$08,$08,$08,$08,$08
  223.          .byte $08,$01,$08,$08,$08,$08
  224.          .byte $08,$08,$08,$01,$08,$08
  225.          .byte $08,$08,$08,$08,$08,$01
  226.          .byte $08,$08,$08,$08,$08,$08
  227.          .byte $08,$01,$08,$08,$08,$08
  228.          .byte $08,$08,$08,$01,$08,$08
  229.          .byte $08,$08,$08,$08,$08,$01
  230.          .byte $08,$08,$08,$08,$08
  231.  
  232. ;---------------------------------------
  233.  
  234. scroll   ldy coltab    ;farbtabelle der
  235.          ldx #$00      ;rasterfarben
  236. scr1     lda coltab+1,x;um ein byte
  237.          sta coltab,x  ;nach links
  238.          inx           ;rotieren.dadurch
  239.          cpx #$40      ;entsteht ein
  240.          bne scr1      ;feines
  241.          sty colend-1  ;rasterscrolling
  242.          rts           ;ende
  243.  
  244. ;---------------------------------------
  245.  
  246. init     lda #$c7       ;hilfsregister
  247.          sta scrhelp    ;setzen
  248.  
  249.          lda #$00       ;counter
  250.          sta flashcount ;initialisieren
  251.          sta flashcount2;
  252.          sta $d020      ;screen und
  253.          sta $d021      ;frame schwarz
  254.          lda #$00       ;schwarzes
  255.          sta $0286      ;farbram
  256.          jsr $e544      ;screen loeschen
  257.  
  258.          ldx #$00       ;"demo test
  259. init1    lda screen1,x  ; grosser
  260.          sta $0454,x    ; zeichensatz"
  261.          inx            ;auf den
  262.          cpx #$ec       ;bildschirm
  263.          bne init1      ;schreiben
  264.  
  265.          ldx #$77       ;"kleiner
  266. init3    lda screen2,x  ; zeichensatz"
  267.          sta $0608,x    ;auf den
  268.          dex            ;bildschirm
  269.          bpl init3      ;schreiben
  270.  
  271.          ldx #$27       ;farbtabelle
  272. init4    lda flashtab2,x;in color-ram
  273.          sta $db20,x    ;schreiben
  274.          dex            ;(fuer's
  275.          bpl init4      ;farbscrolling)
  276.  
  277.          lda #$c7       ;scrollregister
  278.          sta scrollreg  ;setzen
  279.          lda #$1c       ;zeichensatz
  280.          sta charset    ;anschalten
  281.          rts            ;ende
  282.  
  283. ;--"demo test grosser zeichensatz"------
  284. screen1  .byte $20,$20,$20,$20,$20,$20
  285.          .byte $04,$44,$05,$45,$0d,$4d
  286.          .byte $0f,$4f,$2d,$14,$54,$05
  287.          .byte $45,$13,$53,$14,$54,$20
  288.          .byte $20,$20,$20,$20,$20,$20
  289.          .byte $20,$20,$20,$20,$20,$20
  290.          .byte $20,$20,$20,$20,$20,$20
  291.          .byte $20,$20,$20,$20,$84,$c4
  292.          .byte $85,$c5,$8d,$cd,$8f,$cf
  293.          .byte $ad,$94,$d4,$85,$c5,$93
  294.          .byte $d3,$94,$d4,$20,$20,$20
  295.          .byte $20,$20,$20,$20,$20,$20
  296.          .byte $20,$20,$20,$20,$20,$20
  297.          .byte $20,$20,$20,$20,$20,$20
  298.          .byte $20,$20,$20,$20,$20,$20
  299.          .byte $20,$20,$20,$20,$20,$20
  300.          .byte $20,$20,$20,$20,$20,$20
  301.          .byte $20,$20,$20,$20,$20,$20
  302.          .byte $20,$20,$20,$20,$20,$20
  303.          .byte $20,$20,$20,$20,$20,$20
  304.          .byte $20,$20,$20,$20,$20,$20
  305.          .byte $20,$20,$20,$20,$20,$20
  306.          .byte $20,$20,$20,$20,$20,$20
  307.          .byte $20,$20,$20,$20,$20,$20
  308.          .byte $20,$20,$20,$20,$20,$20
  309.          .byte $20,$20,$20,$20,$20,$20
  310.          .byte $20,$20,$07,$47,$12,$52
  311.          .byte $0f,$4f,$13,$53,$13,$53
  312.          .byte $05,$45,$12,$52,$20,$1a
  313.          .byte $5a,$05,$45,$09,$49,$03
  314.          .byte $43,$08,$48,$05,$45,$0e
  315.          .byte $4e,$13,$53,$01,$41,$14
  316.          .byte $54,$1a,$5a,$20,$20,$20
  317.          .byte $87,$c7,$92,$d2,$8f,$cf
  318.          .byte $93,$d3,$93,$d3,$85,$c5
  319.          .byte $92,$d2,$a0,$9a,$da,$85
  320.          .byte $c5,$89,$c9,$83,$c3,$88
  321.          .byte $c8,$85,$c5,$8e,$ce,$93
  322.          .byte $d3,$81,$c1,$94,$d4,$9a
  323.          .byte $da,$20,$20,$20,$20,$20
  324.          .byte $20,$20,$20,$20,$00
  325. ;---"kleiner zeichensatz"---------------
  326. screen2  .text "   "
  327.          .text " "
  328.          .text "   "
  329.          .text " "
  330.          .text "   "
  331.          .text " "
  332. ;---------------------------------------
  333.  
  334.